package juc2.synchronizeddome;

/**
 * synchronized修饰普通方法 锁的是this（也就是同一个对象才会被锁）
 */
public class 修饰普通方法 {
    public synchronized void method1() {
        System.out.println(Thread.currentThread().getName() + "进入method1");
        try {
            Thread.sleep(2000); // 模拟耗时操作
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "离开method1");
    }
    public synchronized void method2() {
        System.out.println(Thread.currentThread().getName() + "进入method2");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName() + "离开method2");
    }

    public static void main(String[] args) {
        修饰普通方法 obj1 = new 修饰普通方法();
        修饰普通方法 obj2 = new 修饰普通方法();
        // 两个线程操作同一个对象
        new Thread(obj1::method1, "线程A").start();
        new Thread(obj1::method2, "线程B").start();
        // 两个线程操作不同对象
//        new Thread(obj2::method2, "线程c").start();
    }
}
